﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BHXH.Core.IService;
using FX.Core;
using BHXH.Core.Domain;
using Infragistics.Win.UltraWinGrid;
using CRM.Admin;

namespace BHXH.Frm.FrmUserControl
{
    public partial class A01_TS : UserControl
    {
        private readonly Ihs_A01TS_msService _hs_a01tsmsSrv;
        private readonly IthanhphoService _thanhphoSrv;
        private readonly IbenhvienService _benhvienSrv;
        public IList<string> ID_A01_TS = new List<string>();
        UltraCombo uc_Quoctich;
        UltraCombo uc_TinhThanhPho;
        UltraCombo uc_Dantoc;
        UltraCombo uc_Benhvien;
        UltraCombo uc_Loai_HopDong;
        private IList<string> _List_ID_Xoa;
        public IList<string> List_ID_Xoa
        {
            get { return _List_ID_Xoa; }
            set { _List_ID_Xoa = value; }
        }
        int Stt = 1;

        public A01_TS()
        {
            InitializeComponent();
            _hs_a01tsmsSrv = IoC.Resolve<Ihs_A01TS_msService>();
            _thanhphoSrv = IoC.Resolve<IthanhphoService>();
            _benhvienSrv = IoC.Resolve<IbenhvienService>();
            LoadGridview_A01aTS();
        }

        public void LoadComboBox()
        {
            uc_Quoctich = new UltraCombo();
            uc_TinhThanhPho = new UltraCombo();
            uc_Loai_HopDong = new UltraCombo();
            uc_Dantoc = new UltraCombo();
            uc_Benhvien = new UltraCombo();

            uc_Quoctich.BindingContext = this.BindingContext;
            uc_TinhThanhPho.BindingContext = this.BindingContext;
            uc_Loai_HopDong.BindingContext = this.BindingContext;
            uc_Dantoc.BindingContext = this.BindingContext;
            uc_Benhvien.BindingContext = this.BindingContext;

            uc_Quoctich.DataSource = EnumHelper.GetDescriptionForBind(QuocTich.QT1).ToList();
            uc_Quoctich.DisplayMember = "ValueString";
            uc_Quoctich.ValueMember = "ValueInt";

            var ListThanhPho = _thanhphoSrv.layTatCaThanhPho();
            uc_TinhThanhPho.DataSource = ListThanhPho;
            uc_TinhThanhPho.DisplayMember = "Ten";
            uc_TinhThanhPho.ValueMember = "ID";

            uc_Loai_HopDong.DataSource = EnumHelper.GetDescriptionForBind(Loai_HopDong_A01TS.LHD1).ToList();
            uc_Loai_HopDong.DisplayMember = "ValueString";
            uc_Loai_HopDong.ValueMember = "ValueInt";

            uc_Dantoc.DataSource = EnumHelper.GetDescriptionForBind(DanToc.DT1).ToList();
            uc_Dantoc.DisplayMember = "ValueString";
            uc_Dantoc.ValueMember = "ValueInt";

            var ListBenhVien = _benhvienSrv.layTatCaBenhVien();
            uc_Benhvien.DataSource = ListBenhVien;
            uc_Benhvien.DisplayMember = "Ten";
            uc_Benhvien.ValueMember = "ID";
        }

        public void LoadGridview_A01aTS()
        {
            LoadComboBox();
            uG_A01_TS.DataSource = GetAll_A01_TS_Tab();
            uG_A01_TS.DisplayLayout.Override.ActiveCellAppearance.Reset();
            uG_A01_TS.DisplayLayout.Override.ActiveRowAppearance.Reset();
            this.uG_A01_TS.DisplayLayout.Bands[0].RowLayoutStyle = RowLayoutStyle.ColumnLayout;
            this.uG_A01_TS.DisplayLayout.Bands[0].Override.AllowRowLayoutLabelSizing = RowLayoutSizing.Both;
            this.uG_A01_TS.DisplayLayout.Bands[0].Columns[0].Hidden = true;
            this.uG_A01_TS.SyncWithCurrencyManager = false;
        }
        /// <summary>
        /// Lấy dữ liệu để đổ vào bảng
        /// </summary>
        /// <returns></returns>
        public DataTable GetAll_A01_TS_Tab()
        {
            IList<hs_A01TS_ms> a = _hs_a01tsmsSrv.GetAll_hs_a01tsms();
            DataTable table = new DataTable();
            table.Columns.Add("ID", typeof(int));
            table.Columns.Add("STT \n(#)", typeof(string));
            table.Columns.Add("Mã số", typeof(string));
            table.Columns.Add("Họ và tên \n(1)", typeof(string));
            table.Columns.Add("Nữ \n(2)", typeof(bool));
            table.Columns.Add("Ngày sinh \n(3)", typeof(string));
            table.Columns.Add("Dân tộc \n(4)", typeof(int));
            table.Columns.Add("Quốc tịch \n(5)", typeof(int));
            table.Columns.Add("Hộ khẩu thường trú \n(6)", typeof(string));
            table.Columns.Add("Địa chỉ \n(7)", typeof(string));
            table.Columns.Add("Điện thoại cố định \n(8)", typeof(string));
            table.Columns.Add("Di động \n(9)", typeof(string));
            table.Columns.Add("CMND \n(10)", typeof(string));
            table.Columns.Add("Ngày cấp \n(11)", typeof(string));
            table.Columns.Add("Nơi cấp \n(12)", typeof(int));
            table.Columns.Add("HĐLĐ Số \n(13)", typeof(string));
            table.Columns.Add("QĐ tuyển dụng ngày \n(14)", typeof(string));
            table.Columns.Add("Có hiệu lực từ ngày \n(15)", typeof(string));
            table.Columns.Add("Loại hợp đồng \n(16)", typeof(int));
            table.Columns.Add("Tên cơ quan, đơn vị \n(17)", typeof(string));
            table.Columns.Add("Nơi làm việc \n(18)", typeof(string));
            table.Columns.Add("Chức vụ, chức danh nghề,\ncông việc \n(19)", typeof(string));
            table.Columns.Add("Lương chính \n(20)", typeof(string));
            table.Columns.Add("Phụ cấp PCCV \n(21)", typeof(string));
            table.Columns.Add("Phụ cấp TNN \n(22)", typeof(string));
            table.Columns.Add("Phụ cấp TNVK \n(23)", typeof(string));
            table.Columns.Add("Phụ cấp khác \n(24)", typeof(string));
            table.Columns.Add("Mã số sổ BHXH đã\nđược cấp(nếu có) \n(25)", typeof(string));
            table.Columns.Add("Mã số thẻ BHYT đã\nđược cấp(nếu có) \n(26)", typeof(string));
            table.Columns.Add("Nơi đăng ký khám chữa\nbệnh ban đầu tại Tỉnh \n(27A)", typeof(int));
            table.Columns.Add("Nơi đăng ký khám chữa\nbệnh ban đầu tại Bệnh viện \n(27B)", typeof(int));
            table.Columns.Add("Quyền lợi hưởng BHYT\n(nếu có)\n(28)", typeof(string));
            table.Columns.Add("Diễn Giải", typeof(string));
            table.Columns.Add("Hình (3x4)", typeof(string));
            if (a.Count > 0)
            {
                foreach (var item in a)
                {
                    table.Rows.Add(item.ID, Stt, item.MaSo, item.CT01, item.CT02, item.CT03, item.CT04, item.CT05
                        , item.CT06, item.CT07, item.CT08, item.CT09, item.CT10, item.CT11, item.CT12, item.CT13
                        , item.CT14, item.CT15, item.CT16, item.CT17, item.CT18, item.CT19, item.CT20, item.CT21
                        , item.CT22, item.CT23, item.CT24, item.CT25, item.CT26, item.CT27A, item.CT27, item.CT28, null, null);
                    Stt += 1;
                }
            }
            else
            {
                table.Rows.Add(null, Stt, null, null, false, null, 1, 1
                    , null, null, null, null, null, null, 1, null
                    , null, null, 1, null, null, null, null, null
                    , null, null, null, null, null, 1, 1, null, null, null);
                Stt += 1;
            }
            return table;
        }

        private void uG_A01_TS_InitializeLayout(object sender, InitializeLayoutEventArgs e)
        {
            e.Layout.Bands[0].Columns[6].EditorComponent = uc_Dantoc;
            e.Layout.Bands[0].Columns[7].EditorComponent = uc_Quoctich;
            e.Layout.Bands[0].Columns[14].EditorComponent = uc_TinhThanhPho;
            e.Layout.Bands[0].Columns[18].EditorComponent = uc_Loai_HopDong;
            e.Layout.Bands[0].Columns[29].EditorComponent = uc_TinhThanhPho;
            e.Layout.Bands[0].Columns[30].EditorComponent = uc_Benhvien;
            for (int i = 0; i < e.Layout.Bands[0].Columns.Count; i++)
            {
                e.Layout.Bands[0].Columns[i].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Center;
            }
        }

        private void uG_A01_TS_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Insert:
                    UltraGridRow row = this.uG_A01_TS.DisplayLayout.Bands[0].AddNew();
                    row.Cells[1].Value = Stt;
                    row.Cells[4].Value = false;
                    row.Cells[6].Value = 1;
                    row.Cells[7].Value = 1;
                    row.Cells[14].Value = 1;
                    row.Cells[18].Value = 1;
                    row.Cells[29].Value = 1;
                    row.Cells[30].Value = 1;
                    Stt += 1;
                    break;
                case Keys.F11:
                    if (this.uG_A01_TS.Selected.Rows.Count > 0)
                    {
                        ID_A01_TS.Add(this.uG_A01_TS.ActiveRow.Cells["ID"].Value.ToString());
                        this.uG_A01_TS.DeleteSelectedRows();
                        List_ID_Xoa = ID_A01_TS;
                        Stt -= 1;
                    }
                    else
                    {
                        MessageBox.Show("Chọn dòng để xóa.");
                    }
                    break;
            }
        }

        public void Xoa_A01TS()
        {
            bool Xoa_hs_a01tsms = false;
            if (DialogResult.Yes == MessageBox.Show("Bạn có chắc chắn xóa không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
            {
                foreach (var item in ID_A01_TS)
                {
                    if (_hs_a01tsmsSrv.Delete_hs_a01tsms(item) > 0)
                    {
                        Xoa_hs_a01tsms = true;
                    }
                }
                if (Xoa_hs_a01tsms == true)
                {
                    MessageBox.Show("Xóa thông tin thành công...");
                }
            }
        }

        public void Ghi_A01TS()
        {
            string ID = "";
            bool update_hs_a01tsms = false;
            bool add_hs_a01tsms = false;
            hs_A01TS_ms hs = new hs_A01TS_ms();
            UltraGridBand band = this.uG_A01_TS.DisplayLayout.Bands[0];
            foreach (UltraGridRow row in band.GetRowEnumerator(GridRowType.DataRow))
            {
                UltraGridColumn column = this.uG_A01_TS.DisplayLayout.Bands[0].Columns[0];
                ID = row.Cells[column].Value.ToString();
                hs.STT = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[1]].Value.ToString();
                hs.MaSo = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[2]].Value.ToString();
                hs.CT01 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[3]].Value.ToString();
                hs.CT02 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[4]].Value.ToString();
                hs.CT03 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[5]].Value.ToString();
                hs.CT04 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[6]].Value.ToString();
                hs.CT05 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[7]].Value.ToString();
                hs.CT06 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[8]].Value.ToString();
                hs.CT07 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[9]].Value.ToString();
                hs.CT08 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[10]].Value.ToString();
                hs.CT09 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[11]].Value.ToString();
                hs.CT10 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[12]].Value.ToString();
                hs.CT11 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[13]].Value.ToString();
                hs.CT12 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[14]].Value.ToString();
                hs.CT13 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[15]].Value.ToString();
                hs.CT14 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[16]].Value.ToString();
                hs.CT15 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[17]].Value.ToString();
                hs.CT16 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[18]].Value.ToString();
                hs.CT17 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[19]].Value.ToString();
                hs.CT18 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[20]].Value.ToString();
                hs.CT19 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[21]].Value.ToString();
                hs.CT20 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[22]].Value.ToString();
                hs.CT21 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[23]].Value.ToString();
                hs.CT22 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[24]].Value.ToString();
                hs.CT23 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[25]].Value.ToString();
                hs.CT24 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[26]].Value.ToString();
                hs.CT25 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[27]].Value.ToString();
                hs.CT26 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[28]].Value.ToString();
                hs.CT27A = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[29]].Value.ToString();
                hs.CT27 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[30]].Value.ToString();
                hs.CT28 = row.Cells[this.uG_A01_TS.DisplayLayout.Bands[0].Columns[31]].Value.ToString();
                
                if (!ID.Equals(""))
                {
                    hs.ID = int.Parse(ID);
                    _hs_a01tsmsSrv.Update_hs_a01tsms(hs);
                    update_hs_a01tsms = true;
                }
                else
                {
                    if (_hs_a01tsmsSrv.Add_hs_a01tsms(hs) == true)
                    {
                        add_hs_a01tsms = true;
                    }
                }
            }
            if (update_hs_a01tsms == true || add_hs_a01tsms == true)
            {
                MessageBox.Show("Cập nhật thông tin thành công...");
            }
        }
    }
}
